
# -*- sh -*-

# $Id: Makefile,v 1.60 2005/11/07 11:15:09 gleixner Exp $

ifeq ($(CROSS_COMPILE),)
    CROSS_COMPILE:=notavailable-
endif

SBINDIR=/usr/sbin
MANDIR=/usr/man
INCLUDEDIR=/usr/include
CC := $(CROSS_COMPILE)gcc
HOSTCC := gcc
CFLAGS := -I./include -O2 -Wall -DWITHOUT_XATTR

ifeq ($(origin CROSS_COMPILE),undefined)
  BUILDDIR := .
else
# Remove the trailing slash to make the directory name
  BUILDDIR := $(CROSS_COMPILE:-=)
endif

HOSTBUILDDIR := host

#RAWTARGETS = ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
#	mkfs.jffs ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info \
#	flash_otp_info flash_otp_dump mtd_debug flashcp nandwrite \
#	jffs2dump \
#	nftldump nftl_format docfdisk \
#	rfddump rfdformat \
#	sumtool # jffs2reader
RAWTARGETS = flash_eraseall nanddump nandwrite flash_info bitflip badblocktool

TARGETS = $(foreach target,$(RAWTARGETS),$(BUILDDIR)/$(target))

RAWHOSTTARGETS = bitflip

HOSTTARGETS = $(foreach target,$(RAWHOSTTARGETS),$(HOSTBUILDDIR)/$(target))

SYMLINKS =

.PHONY:

%: %.o
	$(CC) $(CFLAGS) $(LDFLAGS) -g -o $@ $^

$(BUILDDIR)/%.o: %.c
	mkdir -p $(BUILDDIR)
	$(CC) $(CFLAGS) -g -c -o $@ $< -g -Wp,-MD,$(BUILDDIR)/.$(<F).dep

$(HOSTBUILDDIR)/%.o: %.c
	mkdir -p $(HOSTBUILDDIR)
	$(HOSTCC) $(CFLAGS) -g -c -o $@ $< -g -Wp,-MD,$(HOSTBUILDDIR)/.$(<F).dep

.SUFFIXES: all clean install install_target install_host

all: checkgcc $(TARGETS) $(HOSTTARGETS)

IGNORE=${wildcard $(BUILDDIR)/.*.c.dep}
-include ${IGNORE}

clean:
	rm -f $(BUILDDIR)/*.o $(TARGETS) $(BUILDDIR)/.*.c.dep $(SYMLINKS)
	if [ "$(BUILDDIR)x" != ".x" ]; then rm -rf $(BUILDDIR); fi
	rm -f $(HOSTBUILDDIR)/*.o $(HOSTTARGETS) $(HOSTBUILDDIR)/.*.c.dep
	if [ "$(HOSTBUILDDIR)x" != ".x" ]; then rm -rf $(HOSTBUILDDIR); fi

$(SYMLINKS):
	ln -sf ../fs/jffs2/$@ $@

$(BUILDDIR)/mkfs.jffs2: $(BUILDDIR)/crc32.o \
			$(BUILDDIR)/compr_rtime.o \
			$(BUILDDIR)/mkfs.jffs2.o \
			$(BUILDDIR)/compr_zlib.o \
			$(BUILDDIR)/compr.o
	$(CC) $(LDFLAGS) -o $@ $^ -lz

$(BUILDDIR)/flash_eraseall: $(BUILDDIR)/crc32.o $(BUILDDIR)/flash_eraseall.o
	$(CC) $(LDFLAGS) -o $@ $^

$(BUILDDIR)/jffs2reader: $(BUILDDIR)/jffs2reader.o
	$(CC) $(LDFLAGS) -o $@ $^ -lz

$(BUILDDIR)/jffs2dump: $(BUILDDIR)/jffs2dump.o $(BUILDDIR)/crc32.o
	$(CC) $(LDFLAGS) -o $@ $^

$(BUILDDIR)/sumtool: $(BUILDDIR)/sumtool.o $(BUILDDIR)/crc32.o
	$(CC) $(LDFLAGS) -o $@ $^

$(BUILDDIR)/bitflip: $(BUILDDIR)/bitflip.o 
	$(CC) $(LDFLAGS) -o $@ $^

$(BUILDDIR)/badblocktool: $(BUILDDIR)/badblocktool.o 
	$(CC) $(LDFLAGS) -o $@ $^

$(HOSTBUILDDIR)/mkfs.jffs2: $(HOSTBUILDDIR)/crc32.o \
			$(HOSTBUILDDIR)/compr_rtime.o \
			$(HOSTBUILDDIR)/mkfs.jffs2.o \
			$(HOSTBUILDDIR)/compr_zlib.o \
			$(HOSTBUILDDIR)/compr.o
	$(HOSTCC) $(LDFLAGS) -o $@ $^ -lz

$(HOSTBUILDDIR)/sumtool: $(HOSTBUILDDIR)/sumtool.o $(HOSTBUILDDIR)/crc32.o
	$(HOSTCC) $(LDFLAGS) -o $@ $^

$(HOSTBUILDDIR)/bitflip: $(HOSTBUILDDIR)/bitflip.o 
	$(HOSTCC) $(LDFLAGS) -o $@ $^

install: install_target install_host

install_target: $(TARGETS)
	$(CROSS_COMPILE)strip $^
	install -m0755 $(BUILDDIR)/flash_eraseall ../../../../export/install/rfs/rfscommon/philips/tools/
	install -m0755 $(BUILDDIR)/nandwrite ../../../../export/install/rfs/rfscommon/philips/tools/
	install -m0755 $(BUILDDIR)/nanddump ../../../../export/install/rfs/nfs/philips/tools/
	install -m0755 $(BUILDDIR)/flash_info ../../../../export/install/rfs/nfs/philips/tools/
	install -m0755 $(BUILDDIR)/bitflip ../../../../export/install/rfs/nfs/philips/tools/
	install -m0755 $(BUILDDIR)/badblocktool ../../../../export/install/rfs/nfs/philips/tools/

 install_host: ${HOSTTARGETS}
	strip $^
	install -m0755 $^ ../../../../nxpplf/tools/os/mtd-utils/

#install: $(TARGETS)
#	mkdir -p ${DESTDIR}/${SBINDIR}
#	install -m0755 ${TARGETS} ${DESTDIR}/${SBINDIR}/
#	mkdir -p ${DESTDIR}/${MANDIR}/man1
#	gzip -c mkfs.jffs2.1 > ${DESTDIR}/${MANDIR}/man1/mkfs.jffs2.1.gz

checkgcc:
	which $(CC) >/dev/null || (echo "Cannot call $(CC). Define CROSS_COMPILE on command line"; exit 1)
